package com.lovely3x.jobservice.task;

import android.os.Parcelable;

/**
 * 任务执行进度
 * Created by lovely3x on 16-1-26.
 */

public interface Progress extends Parcelable {

    /***
     * 不可预计
     */
    int INEVITABLE = -1;

    /**
     * 获取任务的标识
     * 这个标识将这个进度和任务绑定起来
     *
     * @return 任务的标识
     */
    long getTask();

    /**
     * 设置任务的标识 {@link #getTask()}
     *
     * @param task 需要设置的任务标识
     */
    void setTask(long task);

    long getWhen();

    void setWhen(long when);

    /**
     * 获取当前任务的状态
     *
     * @return 任务的状态
     */
    int getState();

    /**
     * 设置任务的状态
     *
     * @param state 任务的状态
     */
    void setState(int state);

    /**
     * 获取任务的的最大值
     * 如果无法获取则返回 {@link #INEVITABLE}
     *
     * @return 任务的进度最大值
     */
    long getMax();

    /**
     * 设置任务的最大值
     * {@link #INEVITABLE} 表示无法获取
     *
     * @param max 需要设置的任务最大值
     */
    void setMax(long max);

    /**
     * 获取当前的值
     *
     * @return 当前任务的进度值
     */
    long getCurrent();

    /**
     * 设置当前的任务进度值
     *
     * @param current 需要设置的进度值
     */
    void setCurrent(long current);

    /**
     * 任务的状态
     */
    class State {
        /**
         * 闲置等待中
         */
        public static final int IDLE = 1;
        /**
         * 正在执行
         */
        public static final int EXECUTING = 2;
        /**
         * 执行失败
         */
        public static final int FAILURE = 3;
        /**
         * 任务执行成功
         */
        public static final int SUCCESSFUL = 4;
        /**
         * 任务已经取消
         */
        public static final int CANCELED = 5;

        /**
         * 任务已经暂停
         */
        public static final int PAUSED = 6;

    }

}
